package reflect;

import java.io.File;
import java.net.URISyntaxException;

/**
 * 加载资源时常用的相关路径
 *
 * 之前学习的相关路径"./"由于运行环境不同，位置并非固定，因此实际开发中使用较少。
 *
 * 常用的路径通常为类的加载路径，有两个:
 * 1:类对象 .getResource()
 *      与当前类所处同一个目录
 * 2:类加载器 .getResource()
 *      类加载路径。类的package定义中根包位置。
 *      getClassLoader():获取类加载器
 * 例如:有一个类:
 * package com.webserver.core;
 *
 * public class WebServer{
 *     ...
 * }
 *
 * 在WebServer类中，当我们使用上述两种方法获取路径时他们的对应位置为:
 * WebServer.class.getResource():当前WebServer所在的目录(编译后的Class文件所在目录)
 *
 * WebServer.class.getClassLoader().getResource()
 * 则是在WebServer的包的最上级，即com包的上一级.
 */
public class ReflectDemo7 {
    public static void main(String[] args) throws URISyntaxException {
        /** 类对象 .getResource()
         *
         * .toURI():转换成路径
         */
        File file = new File(
                ReflectDemo7.class.getResource(".").toURI()
        );
        System.out.println(file);
        /** 类加载器 .getResource()
         *
         * getClassLoader():获取类加载器
         */
        File file1 = new File(
                ReflectDemo7.class.getClassLoader().getResource(".").toURI()
        );
        System.out.println(file1);
        //ReflectDemo7.class.getClassLoader().getResource("./XX/XX/某某获取下几级目录路径").toURI()

    }
}
